Point p {
  p.shape = RectangleTransform {
    strokeWidth : 0
    rotation : 0.35
  }

  p.text = TextTransform {
    scaleX : 1.0
    scaleY : 1.0
    string : p.label
  }

  LOCAL.layering = p.shape below p.text
  p.onCanvasFn = encourage polyOnCanvas(p.shape)
  p.labelFn = encourage containsPoly(p.shape, p.text)
}

Point p1; Point p2 
where Lineup(p1, p2) {
  LOCAL.disjFn = encourage disjointPoly(p1.shape, p2.shape)
  LOCAL.alignFn = encourage alignAlong(p1.shape, p2.shape, 0.0)
  LOCAL.orderFn = encourage orderAlong(p1.shape, p2.shape, 20.0)
  LOCAL.sizeFn = encourage smaller(p1.shape, p2.shape)
}